@blockSize: 28px;
@puzzleWidth: 10p;
@puzzleHeight: 18;
body {
    margin: 10px;
    padding: 0;
    position: relative;
}

.puzzle {
    border: 1px solid #666;
    width: @blockSize * @puzzleWidth;
    height: @blockSize * @puzzleHeight;
    box-sizing: content-box;
    .row {
        margin: 0;
        padding: 0;
        height: @blockSize;
        box-sizing: content-box;
        .block {
            margin: 0;
            padding: 0;
            display: inline-block;
            background: #666;
            width: @blockSize;
            height: @blockSize;
            border: 1px solid #666;
            box-sizing: border-box;
            &.c1 {
                background-color: rgb(255, 255, 255);
            }
            &.c2 {
                background-color: rgb(215, 186, 125);
            }
            &.c3 {
                background-color: rgb(116, 216, 254);
            }
            &.c4 {
                background-color: rgb(206, 124, 133);
            }
            &.c5 {
                background-color: rgb(197, 134, 192);
            }
            &.c6 {
                background-color: rgb(176, 206, 163);
            }
            &.c7 {
                background-color: rgb(206, 145, 120);
            }
        }
    }
}

.preview {
    .puzzle();
    position: absolute;
    left: @blockSize * @puzzleWidth + 10px;
    width: @blockSize * 4;
    height: @blockSize * 4;
}